/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.carrito.jsf.bo;

import com.carrito.jdbc.dao.ImplArticulo;
import com.carrito.jsf.bean.BeanArticulo;
import com.carrito.jsf.persistence.Articulo;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

/**
 *
 * @author oscarc
 */
public class ArticuloImplBO implements ArticuloBO {

    public static final Logger logger = Logger.getLogger(ArticuloImplBO.class);
    
    @Autowired
    private ImplArticulo articuloDAO;   //Mediante inyeccion de dependecias a traves de Spring en el applicationContext

    @Override
    public void insert(BeanArticulo obj) {
        logger.info("Ingreso metodo insert clase ArticuloImplBO");
        Articulo articuloClasificacion = new Articulo();
        articuloClasificacion.setCodigo(obj.getCodigo());
        articuloClasificacion.setDescripcion(obj.getNombre());
        articuloClasificacion.setCantidad(obj.getCantidad());
        articuloClasificacion.setIva(obj.getIva());
        articuloClasificacion.setPrecio(obj.getPrecio());
        articuloClasificacion.setClasificacion(obj.getClasificacion());
        getArticuloDAO().insert(articuloClasificacion);      
    }

    @Override
    public void delete(BeanArticulo obj) {
        logger.info("Ingreso metodo delete clase ArticuloImplBO");
        Articulo articuloClasificacion = new Articulo();
        articuloClasificacion.setCodigo(obj.getCodigo());
        articuloClasificacion.setDescripcion(obj.getNombre());
        getArticuloDAO().delete(articuloClasificacion);
    }

    @Override
    public void update(BeanArticulo obj) {
        logger.info("Ingreso metodo update clase ArticuloImplBO");
        Articulo articuloClasificacion = new Articulo();
        articuloClasificacion.setCodigo(obj.getCodigo());
        articuloClasificacion.setDescripcion(obj.getNombre());
        getArticuloDAO().update(articuloClasificacion);
    }

    @Override
    public List<BeanArticulo> getAll() {
        logger.info("Ingreso metodo getAll clase ArticuloImplBO");
        List<BeanArticulo> lista = new ArrayList<BeanArticulo>();
        for (Articulo obj : getArticuloDAO().getAll()) {
            BeanArticulo bean = new BeanArticulo();
            bean.setCodigo(obj.getCodigo());
            bean.setNombre(obj.getDescripcion());
            bean.setCantidad(obj.getCantidad());
            bean.setPrecio(obj.getPrecio());
            bean.setIva(obj.getIva());
            bean.setClasificacion(obj.getClasificacion());
            lista.add(bean);
        }
        return lista;
    }

    public ImplArticulo getArticuloDAO() {
        return articuloDAO;
    }

    public void setArticuloDAO(ImplArticulo articuloDAO) {
        this.articuloDAO = articuloDAO;
    }
}
